import {

	ref,
	reactive
} from 'vue'
import {
	logout,
	updatepassword
} from "~/api/manager"
import {
	showModal,
	toast
} from '~/composables/util'
import {
	useRouter
} from 'vue-router'
import {
	useStore
} from 'vuex'

export function useRepassword() {

	const router = useRouter()
	const store = useStore()

	//修改密码
	const formDrawerRef = ref(null)
	const form = reactive({
		oldpassword: "",
		password: "",
		repassword: ""
	})

	const rules = {
		oldpassword: [{
			required: true,
			message: "旧密码不能为空！",
			trigger: "blur"
		}],
		password: [{
				required: true,
				message: "新密码不能为空！",
				trigger: "blur"
			},
			{
				min: 6,
				message: "新密码长度不能少于 6 位！",
				trigger: "blur"
			}
		],
		repassword: [{
				required: true,
				message: "确认密码不能为空！",
				trigger: "blur"
			},
			{
				validator: (rule, value, callback) => {
					if (value !== form.password) {
						callback(new Error("确认密码和新密码不一致！"));
					} else {
						callback();
					}
				},
				trigger: "blur"
			}
		]
	}

	const formRef = ref(null)
	const loading = ref(false)
	const onSubmit = () => {
		formRef.value.validate((valid) => {
			if (!valid) {
				return false
			}
			loading.value = true
			updatepassword(form)
				.then(res => {
					toast("修改密码成功,请重新登录")
					store.dispatch("logout")
					// 跳转回登录页
					router.push("/login")
				})
				.catch(error => {
					console.error('Update password error:', error)
					toast('修改密码失败，请重试')
				})
				.finally(() => {
					loading.value = false
				})
		})
	}

	const openRePasswordForm = () => formDrawerRef.value.open()

	return {
		formDrawerRef,
		form,
		rules,
		formRef,
		onSubmit,
		openRePasswordForm
	}
}

export function useLogout() {
	function handleLogout() {
		showModal("是否要退出登录？").then(res => {
			logout()
				.finally(() => {
					store.dispatch("logout")
					// 跳转回登录页
					router.push("/login")
					// 提示退出登录成功
					toast("退出登录成功")
				})
		})
	}
	return {
		handleLogout
	};
}